package com.ldy.demo1;

import org.junit.Test;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * 描述：<br>
 * 版权：Copyright (c) 2011 ~ 2017<br>
 * 公司：北京活力天汇<br>
 * 作者：刘德咏<br>
 * 版本：1.0<br>
 * 创建日期：2017/7/6<br>
 */
public class Interview {

    /**
     * 超大数乘法
     * @param num1 第一个数
     * @param num2 第二个数
     * @return 二个数的相乘之积
     */
    public String bigNumMul(String num1, String num2) {
        // step1 减少加法次数，将二个数中的较大数作为被加数

        // step2 大数的加法，用sum接受

        // step3 将小的那个数作为循环结束条件，每一次将个位数值减1，当减到长度为1 ，并且 equals 0 的时候，循环结束，统计结果
        return null;
    }

    @Test
    public void test() {
        String a = "13";
        String b = "12";
        System.out.println(a);
        System.out.println(b);
        exchange(a, b);
        System.out.println(a);
        System.out.println(b);
        String[] arr = new String[5];
    }

    private void exchange(String a, String b) {
        String temp = a;
        a = b;
        b = temp;

    }

    @Test
    public void testReflect() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
        List<Integer> list = new ArrayList<Integer>(); //定义Integer泛型
        String str = "abc";
        Method[] method=list.getClass().getDeclaredMethods();//取得list的所有方法
        System.out.println(method.length);
        for(int i=0;i<method.length;i++){
            System.out.println(method[i]);//遍历打印list的方法
        }
        //method[0].invoke(list, str);//通过反射来执行list的第一个方法,第一个是list对象,代表该对象的方法,第二个是方法参数
        Method add = list.getClass().getDeclaredMethod("add", Object.class);
        add.invoke(list, str);
        System.out.println(list.size());
        System.out.println(list);
        for(int i=0;i<list.size();i++){
            System.out.println(list.get(i));
        }
        System.out.println("zhangsan");

    }

    @Test
    public void test11() {
        List<Integer> idList = new ArrayList<>();
        idList.add(1);
        idList.add(2);
        BigInteger maxLogId = BigInteger.valueOf(Long.parseLong(Collections.max(idList).toString()));
        System.out.println(maxLogId.intValue());
        System.out.println(maxLogId.getClass().getSimpleName());
    }

}
